#ifndef PROTOCOL_H
#define PROTOCOL_H

#include <asgard.h>

// 协议魔数
#define MAGIC_NUMBER 0xA1B2C3D4

// 协议头长度
#define HEADER_LENGTH sizeof(protocol_header_t)

// 命令类型枚举
typedef enum
{
    CMD_AUTH,              // 认证
    CMD_ECHO,              // 回显测试
    CMD_LOGIN_REQ,         // 登录
    CMD_LOGIN_RESP_SUC,    // 登录成功
    CMD_LOGIN_RESP_FAI,    // 登录失败
    CMD_REGISTER_REQ,      // 注册
    CMD_REGISTER_RESP_SUC, // 注册成功
    CMD_REGISTER_RESP_FAI, // 注册失败
    CMD_LS_REQ,            // 列出文件
    CMD_LS_RESP,           //
    CMD_CD_REQ,            // 改变目录
    CMD_CD_RESP,           //
    CMD_PWD_REQ,           // 显示当前目录
    CMD_PWD_RESP,          //
    CMD_RMOVE_REQ,         // 删除文件
    CMD_RMOVE_RESP,        //
    CMD_MKDIR_REQ,         // 创建目录
    CMD_MKDIR_RESP,        //
    CMD_RMDIR_REQ,         // 删除目录
    CMD_RMDIR_RESP,        //
    CMD_GETS_REQ,          // 下载文件
    CMD_GETS_RESP,         //
    CMD_PUTS_REQ,          // 上传文件
    CMD_PUTS_RESP,         //
    CMD_RESPONSE           // 服务器响应
} Command;

// 协议头结构
typedef struct protocol_header_s
{
    int magic;       // 魔数
    int command;     // 命令类型
    int data_length; // 后续数据长度
    // int request_id;  // 请求ID
} protocol_header_t;

#endif  // PROTOCOL_H